Описание
Объект Database представляет открытую базу данных.
Замечания
Работа с открытой базой данных ведется с помощью объекта
Database и его методов и свойств. Для баз данных любого типа пользователь
имеет следующие возможности:
1. Использовать метод Execute для запуска
запроса на изменение.
2. С помощью свойства Connect установить
подключение к источнику данных ODBC.
3. С помощью свойства
QueryTimeout ограничить время ожидания выполнения запроса к источнику
данных ODBC.
4. Использовать свойство RecordsAffected для
определения количества записей, измененных в запросе на изменение.
5.
Использовать метод OpenRecordset для выполнения запроса на выборку и
создания объекта Recordset.
6. С помощью свойства Version
определить версию ядра базы данных, в которой была создана база данных.
В
базах данных Microsoft Jet (файлы .mdb) можно использовать другие
методы, свойства и семейства для работы с объектом Database, а также для
создания, изменения или получения информации о содержащихся в базе данных
таблицах, запросах и связях. Например, пользователь имеет возможность:
1.
Использовать методы CreateTableDef и CreateRelation для создания
таблиц и связей, соответственно.
2. Использовать метод CreateProperty
для определения новых свойств объекта Database.
3. Использовать метод
CreateQueryDef для создания описания постоянного или временного
запроса.
4. Использовать методы MakeReplica, Synchronize и
PopulatePartial для создания и синхронизации полных или частичных реплик
базы данных.
5. С помощью свойства CollatingOrder указать язык, по
правилам которого выполняется сортировка символьных полей.
В рабочей области
ODBCDirect пользователь имеет возможность:
1. С помощью свойства
Connection получить ссылку на объект Connection, соответствующий
объекту Database.
При вызове метода CreateDatabase создается
постоянный объект Database, который автоматически добавляется в семейство
Databases, что приводит к его сохранению на диске.
При использовании
метода OpenDatabase нет необходимости указывать объект
DBEngine.
Открытие базы данных, содержащей присоединенные таблицы, не
приводит к автоматическому установлению связей с указанными внешними файлами или
источниками данных ODBC, подключенными к ядру Microsoft Jet. В
этом случае требуется либо указать ссылку на соответствующие таблице объекты
TableDef или Field, либо открыть для таблицы объект
Recordset. Если связи установить не удается, возникает перехватываемая
ошибка. К возникновению перехватываемой ошибки приводит также отсутствие
необходимых разрешений на доступ к базе данных или попытка установить связь с
базой данных, открытой другим пользователем для монопольного
доступа.
Допускается также непосредственное открытие с помощью метода
OpenDatabase внешней базы данных (такой как FoxPro, dBASE
или Paradox) вместо открытия базы данных с ядром Microsoft Jet с
последующим присоединением внешних таблиц.
Не рекомендуется непосредственно
открывать объект Database для источника данных ODBC, подключенного
к ядру Microsoft Jet, такого как Microsoft SQL Server, поскольку
запрос возвращает данные медленнее, чем присоединенные таблицы. При открытии
объекта Database для внешних бах данных с драйверами ISAM, таких
как FoxPro или Paradox, проблем с быстродействием не
возникает.
При завершении выполнения процедуры, в которой описан объект
Database, этот локальный объект Database закрывается вместе со
всеми открытыми объектами Recordset. Любые незавершенные изменения при
этом теряются, а незавершенные транзакции свертываются без возникновения
перехватываемой ошибки. Чтобы избежать потери изменений пользователь должен в
явном виде до выхода из процедуры завершить все транзакции или операции
редактирования и закрыть объекты Recordset и объекты Database,
описанные в этой процедуре на локальном уровне.
После применения к объекту
Workspace одного из методов управления транзакциями (BeginTrans,
CommitTrans или Rollback) эти транзакции применяются ко всем базам
данных, открытым в объекте Workspace, в котором был открыт этот объект
Database. Для того чтобы выполнить независимую транзакцию, следует
предварительно открыть дополнительный объект Workspace, а затем открыть в
этом объекте Workspace еще один объект Database.
Можно открыть
источник данных или базу данных несколько раз, создавая повторяющиеся имена в
семействе Databases. После этого следует присвоить объекты
Database объектным переменным и ссылаться на объекты по именам
переменных.
Пример
Следующая программа создает объект Database и открывает
существующий объект Database в стандартном объекте Workspace.
Затем печатается семейство Databases и семейство Properties
каждого объекта Database.
Sub DatabaseObjectX()
Dim wrkJet As Workspace
Dim dbsNorthwind As Database
Dim dbsNew As Database
Dim dbsLoop As Database
Dim prpLoop As Property
Set wrkJet = CreateWorkspace("JetWorkspace", "admin", "", dbUseJet)
' Проверяет, что нет файла, имя которого совпадает с именем
' новой базы данных.
If Dir("NewDB.mdb") <> "" Then Kill "NewDB.mdb"
' Создает новую базу данных с указанной
' языковой настройкой.
Set dbsNew = wrkJet.CreateDatabase("NewDB.mdb", dbLangGeneral)
Set dbsNorthwind = wrkJet.OpenDatabase("Борей.mdb")
' Отображает семейство Databases.
For Each dbsLoop In wrkJet.Databases
With dbsLoop
Debug.Print "Свойства " & .Name
' Отображает семейство Properties каждого
' объекта Database.
For Each prpLoop In .Properties
If prpLoop <> "" Then Debug.Print " " & prpLoop.Name & " = " & prpLoop
Next prpLoop
End With
Next dbsLoop
dbsNew.Close
dbsNorthwind.Close
wrkJet.Close
End Sub